package org.jeecg.modules.wms.goods.service.impl;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.wms.config.WarehouseDictEnum;
import org.jeecg.modules.wms.goods.entity.WmsProductBrand;
import org.jeecg.modules.wms.goods.mapper.WmsProductBrandMapper;
import org.jeecg.modules.wms.goods.service.IWmsProductBrandService;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import java.util.Objects;

/**
 * @Description: 商品品牌
 * @Author: jeecg-boot
 * @Date: 2025-07-19
 * @Version: V1.0
 */
@Service
public class WmsProductBrandServiceImpl extends ServiceImpl<WmsProductBrandMapper, WmsProductBrand> implements IWmsProductBrandService {

    @Override
    public void add(WmsProductBrand wmsProductBrand) {
        //品牌名称要唯一
        //拿到品牌名称，查询数据库，如果存在，则不允许添加
        WmsProductBrand brand = this.getOne(Wrappers.lambdaQuery(WmsProductBrand.class)
                .eq(WmsProductBrand::getName, wmsProductBrand.getName()));
        if (!Objects.isNull(brand)) {
            throw new RuntimeException("品牌名称已存在");
        }
        this.save(wmsProductBrand);
    }

    @Override
    public void delete(String id) {
        //删除品牌只能删除创建的
        WmsProductBrand brand = this.getById(id);
        if (!Objects.equals(brand.getStatus(), WarehouseDictEnum.STATUS_CREATED.getCode())) {
            throw new RuntimeException("状态异常");
        }
    }

    @Override
    public void edit(WmsProductBrand wmsProductBrand) {
        //状态的修改：创建和禁用可以修改成启用，启用可以修改成禁用
        WmsProductBrand brand = this.getById(wmsProductBrand.getId());
        //启用的状态下只能修改状态为禁用
        if (brand.getStatus().equals(WarehouseDictEnum.STATUS_ACTIVE.getCode()) &&
                !wmsProductBrand.getStatus().equals(WarehouseDictEnum.STATUS_INACTIVE.getCode())) {
            throw new JeecgBootException("已启用，不可修改");
        }
        //禁用状态下只能修改状态为启用
        if (brand.getStatus().equals(WarehouseDictEnum.STATUS_INACTIVE.getCode()) &&
                wmsProductBrand.getStatus().equals(WarehouseDictEnum.STATUS_CREATED.getCode())) {
            throw new JeecgBootException("状态非法");
        }
        //创建只能修改成启用
        if (brand.getStatus().equals(WarehouseDictEnum.STATUS_CREATED.getCode()) &&
                wmsProductBrand.getStatus().equals(WarehouseDictEnum.STATUS_INACTIVE.getCode())) {
            throw new JeecgBootException("状态非法");
        }
        this.updateById(wmsProductBrand);
    }

}
